/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.urbainski.estagio.entidade;

import java.io.Serializable;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Transient;

import java.util.ArrayList;

/**
 *
 * @author Cristian Elder Urbainski
 * @since 11/12/2011
 */
@Entity
@Table(name = "turma")
public class Turma implements Serializable {

    private static final long serialVersionUID = 1L;
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id_turma")
    private Integer idTurma;
    
    @Column(name = "id_curso")
    private Integer idCurso;

    @Column(name = "ds_turma")
    private String dsTurma;

    @Column(name = "tp_situacao")
    private Integer tpSituacao;
    
    @JoinColumn(name = "id_curso", referencedColumnName = "id_curso", insertable = false, updatable= false)
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private Curso curso;
    
    @Transient
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idTurma", fetch = FetchType.LAZY)
    private List<Aluno> listaAluno;
    
    @Transient
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idTurma", fetch = FetchType.LAZY)
    private List<Turmaprofessor> listaProfessor;
   
    @Transient
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idTurma", fetch = FetchType.LAZY)
    private List<Turmamateria> listaMateria;
    
    public Turma(){
    	listaAluno = new ArrayList<Aluno>();
    	listaMateria = new ArrayList<Turmamateria>();
    	listaProfessor = new ArrayList<Turmaprofessor>();
    }

    public Curso getCurso() {
        return curso;
    }

    public void setCurso(Curso curso) {
        this.curso = curso;
    }

    public String getDsTurma() {
        return dsTurma;
    }

    public void setDsTurma(String dsTurma) {
        this.dsTurma = dsTurma;
    }

    public Integer getIdCurso() {
        return idCurso;
    }

    public void setIdCurso(Integer idCurso) {
        this.idCurso = idCurso;
    }

    public Integer getIdTurma() {
        return idTurma;
    }

    public void setIdTurma(Integer idTurma) {
        this.idTurma = idTurma;
    }

    public List<Aluno> getListaAluno() {
        return listaAluno;
    }

    public void setListaAluno(List<Aluno> listaAluno) {
        this.listaAluno = listaAluno;
    }

    public List<Turmamateria> getListaMateria() {
        return listaMateria;
    }

    public void setListaMateria(List<Turmamateria> listaMateria) {
        this.listaMateria = listaMateria;
    }

    public List<Turmaprofessor> getListaProfessor() {
        return listaProfessor;
    }

    public void setListaProfessor(List<Turmaprofessor> listaProfessor) {
        this.listaProfessor = listaProfessor;
    }

    public Integer getTpSituacao() {
        return tpSituacao;
    }

    public void setTpSituacao(Integer tpSituacao) {
        this.tpSituacao = tpSituacao;
    }

    
}
